\subsection{Простой пример}

% subsections
\input{patterns/09_loops/simple/x86}
\input{patterns/09_loops/simple/ARM/main}
\input{patterns/09_loops/simple/MIPS}

\subsubsection{Ещё кое-что}

По генерируемому коду мы видим следующее: после инициализации $i$, тело цикла не исполняется.
В начале проверяется условие $i$, а лишь затем исполняется тело цикла.
И это правильно, потому что если условие в самом начале не истинно, тело цикла исполнять нельзя.

Так может быть, например, в таком случае:

\lstinputlisting[style=customc]{patterns/09_loops/simple/loops_3_RU.c}

Если \IT{количество\_элементов\_для\_обработки} равно 0,
тело цикла не должно исполниться ни разу.
Поэтому проверка условия происходит перед тем как исполнить само тело.

Впрочем, оптимизирующий компилятор может переставить проверку условия и тело цикла местами, если он уверен,
что описанная здесь ситуация невозможна, как в случае с нашим простейшим примером и с применением компиляторов
Keil, Xcode (LLVM), MSVC и GCC в режиме оптимизации.

